package model;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Participante {
 
	private String nombre;
	 
	private int numero;
	 
	private int puntosFecha;
	 
	private int puntosGral;
	 
	private Equipo equipo;
	 
	public Participante(String nombre,int numero){
		this.nombre = nombre;
		this.numero = numero;
	}
	
	public boolean validarEquipo() {
		boolean valido = true;
		Map posiciones = new HashMap<String,Integer>(); 
		Map clubes = new HashMap<Integer,Integer>(); 
		
		// regla de la cantidad de jugadores
		if (this.equipo.getCantJugadores() < Equipo.CANTIDAD_JUGADORES_TOTAL_MIN){
			valido = false;
		}
		
		// regla del costo total del equipo
		if (this.equipo.getCostoTotal() > Equipo.COSTO_TOTAL_MAX){
			valido = false;
		}
		
		// Recorro todo el equipo para validar las reglas de club y puesto
		for (Iterator iter = equipo.getFormacion().iterator(); iter.hasNext();) {
			Jugador jugador = (Jugador) iter.next();
			
			// verifico la posicion
			if (posiciones.get(jugador.getPosicion().getTipo()) == null){
				posiciones.put(jugador.getPosicion().getTipo(), 1);
			} 
			else{
				Integer cantidad = (Integer)posiciones.get(jugador.getPosicion().getTipo());
				posiciones.put(jugador.getPosicion().getTipo(),cantidad.intValue() + 1);
			}

			// verifico el club
			if (clubes.get(jugador.getClub().getNombre()) == null){
				clubes.put(jugador.getClub().getNombre(), 1);
			} 
			else{
				Integer cantidad = (Integer)clubes.get(jugador.getClub().getNombre());
				clubes.put(jugador.getClub().getNombre(),cantidad.intValue() + 1);
			}			
			
		}
		
		// regla de cantidad de jugadores por club
		for (Iterator iter = clubes.keySet().iterator(); iter.hasNext();) {
			String clave = (String) iter.next();
			if (((Integer)clubes.get(clave)).intValue() > Equipo.CANTIDAD_JUGADORES_MISMO_CLUB_MAX){
				valido = false;
			}
		}
		
		// regla de cantidad de jugadores por puesto
		for (Iterator iter = posiciones.keySet().iterator(); iter.hasNext();) {
			Integer clave = (Integer) iter.next();
			if (((Integer)posiciones.get(clave)).intValue() < Equipo.CANTIDAD_JUGADORES_MISMA_POS_MIN){
				valido = false;
			}
		}	
		
		return valido;
	}
	 
	public void crearEquipo() {
	 
	}
	 
	public void setNombre(String nombre) {
	 
	}
	 
	public void armarEquipoDummy(Map<String,Jugador> jugadores) {
		this.equipo = new Equipo();
		this.equipo.agregarJugador(jugadores.get("a1"));
		this.equipo.agregarJugador(jugadores.get("a2"));
		this.equipo.agregarJugador(jugadores.get("d1"));
		this.equipo.agregarJugador(jugadores.get("d2"));
		this.equipo.agregarJugador(jugadores.get("d3"));
		this.equipo.agregarJugador(jugadores.get("m1"));
		this.equipo.agregarJugador(jugadores.get("m2"));
		this.equipo.agregarJugador(jugadores.get("m3"));
		this.equipo.agregarJugador(jugadores.get("del1"));
		this.equipo.agregarJugador(jugadores.get("del2"));
		this.equipo.agregarJugador(jugadores.get("del3"));
		
		this.equipo.setCantJugadores(10);
		this.equipo.setCostoTotal(this.equipo.getCantJugadores() * 5000);

	}
	 
}
 
